knitr::opts_chunk$set(echo = FALSE)
In 2016, Cyclistic launched a successful bike-share oering. Since then, the program has grown to a eet of 5,824 bicycles that are geotracked and locked into a network of 692 stations across Chicago. The bikes can be unlocked from one station and returned to any other station in the system anytime. Until now, Cyclistic’s marketing strategy relied on building general awareness and appealing to broad consumer segments. One approach that helped make these things possible was the flexibility of its pricing plans: single-ride passes, full-day passes, and annual memberships. Customers who purchase single-ride or full-day passes are referred to as casual riders. Customers who purchase annual memberships are Cyclistic members.
The main purpose of this analysis is to found out how annual Members of Cyclistic bike uses differ from the Casual Riders. First lets define a casual Rider. A casual user is a user that does not possesses an annual membership and only uses Cyclistic bikes in a full-day or single-ride pass. This are some of the questions we are trying to answer
- How do annual members and casual riders use Cyclistic bikes differently?
The data is collected from Divvy-trip. Data is provided and collected by Divvy-trip and is open source for. The data is current and for this we will use the last 12 months of data. From April 2024 to March 2025 each month is in on a CSV file.
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.0.4
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
##
## Attaching package: 'janitor'
##
##
## The following objects are masked from 'package:stats':
##
## chisq.test, fisher.test
## ride_id rideable_type started_at ended_at
## 1 743252713F32516B classic_bike 2024-04-22 19:08:21 2024-04-22 19:12:56
## 2 BE90D33D2240C614 electric_bike 2024-04-11 06:19:24 2024-04-11 06:22:21
## 3 D47BBDDE7C40DD61 classic_bike 2024-04-20 11:13:13 2024-04-20 11:29:31
## 4 6684E760BF9EA9B5 classic_bike 2024-04-04 18:39:20 2024-04-04 18:43:06
## 5 CA9EFC0D24C24A27 electric_bike 2024-04-19 19:30:20 2024-04-19 20:07:42
## 6 AA64319F52336324 classic_bike 2024-04-10 16:27:08 2024-04-10 16:32:16
## start_station_name start_station_id end_station_name
## 1 Aberdeen St & Jackson Blvd 13157 Desplaines St & Jackson Blvd
## 2 Aberdeen St & Jackson Blvd 13157 Desplaines St & Jackson Blvd
## 3 Sheridan Rd & Montrose Ave TA1307000107 Ashland Ave & Belle Plaine Ave
## 4 Aberdeen St & Jackson Blvd 13157 Desplaines St & Jackson Blvd
## 5 Sheridan Rd & Montrose Ave TA1307000107 Stetson Ave & South Water St
## 6 Aberdeen St & Jackson Blvd 13157 Loomis St & Lexington St
## end_station_id start_lat start_lng end_lat end_lng member_casual
## 1 15539 41.87773 -87.65479 41.87812 -87.64395 member
## 2 15539 41.87772 -87.65496 41.87812 -87.64395 member
## 3 13249 41.96167 -87.65464 41.95606 -87.66884 member
## 4 15539 41.87773 -87.65479 41.87812 -87.64395 member
## 5 TA1308000029 41.96161 -87.65461 41.88683 -87.62232 member
## 6 13332 41.87773 -87.65479 41.87223 -87.66136 member
## ride_id rideable_type started_at ended_at
## Length:5779568 Length:5779568 Length:5779568 Length:5779568
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## start_station_name start_station_id end_station_name end_station_id
## Length:5779568 Length:5779568 Length:5779568 Length:5779568
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## start_lat start_lng end_lat end_lng
## Min. :41.64 Min. :-87.91 Min. :16.06 Min. :-144.05
## 1st Qu.:41.88 1st Qu.:-87.66 1st Qu.:41.88 1st Qu.: -87.66
## Median :41.90 Median :-87.64 Median :41.90 Median : -87.64
## Mean :41.90 Mean :-87.65 Mean :41.90 Mean : -87.65
## 3rd Qu.:41.93 3rd Qu.:-87.63 3rd Qu.:41.93 3rd Qu.: -87.63
## Max. :42.07 Max. :-87.52 Max. :87.96 Max. : 152.53
## NA's :6589 NA's :6589
## member_casual
## Length:5779568
## Class :character
## Mode :character
##
##
##
##
## n
## 1 5779568
## n
## 1 5772979
## ride_id rideable_type started_at ended_at
## 1 743252713F32516B classic_bike 2024-04-22 19:08:21 2024-04-22 19:12:56
## 2 BE90D33D2240C614 electric_bike 2024-04-11 06:19:24 2024-04-11 06:22:21
## 3 D47BBDDE7C40DD61 classic_bike 2024-04-20 11:13:13 2024-04-20 11:29:31
## 4 6684E760BF9EA9B5 classic_bike 2024-04-04 18:39:20 2024-04-04 18:43:06
## 5 CA9EFC0D24C24A27 electric_bike 2024-04-19 19:30:20 2024-04-19 20:07:42
## 6 AA64319F52336324 classic_bike 2024-04-10 16:27:08 2024-04-10 16:32:16
## start_station_name start_station_id end_station_name
## 1 Aberdeen St & Jackson Blvd 13157 Desplaines St & Jackson Blvd
## 2 Aberdeen St & Jackson Blvd 13157 Desplaines St & Jackson Blvd
## 3 Sheridan Rd & Montrose Ave TA1307000107 Ashland Ave & Belle Plaine Ave
## 4 Aberdeen St & Jackson Blvd 13157 Desplaines St & Jackson Blvd
## 5 Sheridan Rd & Montrose Ave TA1307000107 Stetson Ave & South Water St
## 6 Aberdeen St & Jackson Blvd 13157 Loomis St & Lexington St
## end_station_id start_lat start_lng end_lat end_lng member_casual
## 1 15539 41.87773 -87.65479 41.87812 -87.64395 member
## 2 15539 41.87772 -87.65496 41.87812 -87.64395 member
## 3 13249 41.96167 -87.65464 41.95606 -87.66884 member
## 4 15539 41.87773 -87.65479 41.87812 -87.64395 member
## 5 TA1308000029 41.96161 -87.65461 41.88683 -87.62232 member
## 6 13332 41.87773 -87.65479 41.87223 -87.66136 member
## Warning: NAs introduced by coercion
## Warning: NAs introduced by coercion
## [1] "ride_id" "rideable_type" "started_at"
## [4] "ended_at" "start_station_name" "start_station_id"
## [7] "end_station_name" "end_station_id" "start_lat"
## [10] "start_lng" "end_lat" "end_lng"
## [13] "member_casual"
## ride_id rideable_type started_at ended_at
## 1 743252713F32516B classic_bike 2024-04-22 19:08:21 2024-04-22 19:12:56
## 2 BE90D33D2240C614 electric_bike 2024-04-11 06:19:24 2024-04-11 06:22:21
## 4 6684E760BF9EA9B5 classic_bike 2024-04-04 18:39:20 2024-04-04 18:43:06
## 6 AA64319F52336324 classic_bike 2024-04-10 16:27:08 2024-04-10 16:32:16
## 20 3343C607757067B2 electric_bike 2024-04-16 18:14:23 2024-04-16 18:21:24
## 26 27F37997E1413F1C classic_bike 2024-04-16 09:34:09 2024-04-16 10:01:44
## start_station_name start_station_id end_station_name
## 1 Aberdeen St & Jackson Blvd 13157 Desplaines St & Jackson Blvd
## 2 Aberdeen St & Jackson Blvd 13157 Desplaines St & Jackson Blvd
## 4 Aberdeen St & Jackson Blvd 13157 Desplaines St & Jackson Blvd
## 6 Aberdeen St & Jackson Blvd 13157 Loomis St & Lexington St
## 20 Desplaines St & Randolph St 15535 Aberdeen St & Monroe St
## 26 Damen Ave & Cortland St 13133 Michigan Ave & Madison St
## end_station_id start_lat start_lng end_lat end_lng member_casual
## 1 15539 41.87773 -87.65479 41.87812 -87.64395 member
## 2 15539 41.87772 -87.65496 41.87812 -87.64395 member
## 4 15539 41.87773 -87.65479 41.87812 -87.64395 member
## 6 13332 41.87773 -87.65479 41.87223 -87.66136 member
## 20 13156 41.88353 -87.64425 41.88042 -87.65552 member
## 26 13036 41.91598 -87.67733 41.88213 -87.62512 member
## ride_length
## 1 275
## 2 177
## 4 226
## 6 308
## 20 421
## 26 1655
## [1] "ride_id" "rideable_type" "started_at"
## [4] "ended_at" "start_station_name" "start_station_id"
## [7] "end_station_name" "end_station_id" "start_lat"
## [10] "start_lng" "end_lat" "end_lng"
## [13] "member_casual" "ride_length"
## ride_id rideable_type started_at ended_at
## 1 743252713F32516B classic_bike 2024-04-22 19:08:21 2024-04-22 19:12:56
## 2 BE90D33D2240C614 electric_bike 2024-04-11 06:19:24 2024-04-11 06:22:21
## 4 6684E760BF9EA9B5 classic_bike 2024-04-04 18:39:20 2024-04-04 18:43:06
## 6 AA64319F52336324 classic_bike 2024-04-10 16:27:08 2024-04-10 16:32:16
## 20 3343C607757067B2 electric_bike 2024-04-16 18:14:23 2024-04-16 18:21:24
## 26 27F37997E1413F1C classic_bike 2024-04-16 09:34:09 2024-04-16 10:01:44
## start_station_name start_station_id end_station_name
## 1 Aberdeen St & Jackson Blvd 13157 Desplaines St & Jackson Blvd
## 2 Aberdeen St & Jackson Blvd 13157 Desplaines St & Jackson Blvd
## 4 Aberdeen St & Jackson Blvd 13157 Desplaines St & Jackson Blvd
## 6 Aberdeen St & Jackson Blvd 13157 Loomis St & Lexington St
## 20 Desplaines St & Randolph St 15535 Aberdeen St & Monroe St
## 26 Damen Ave & Cortland St 13133 Michigan Ave & Madison St
## end_station_id start_lat start_lng end_lat end_lng member_casual
## 1 15539 41.87773 -87.65479 41.87812 -87.64395 member
## 2 15539 41.87772 -87.65496 41.87812 -87.64395 member
## 4 15539 41.87773 -87.65479 41.87812 -87.64395 member
## 6 13332 41.87773 -87.65479 41.87223 -87.66136 member
## 20 13156 41.88353 -87.64425 41.88042 -87.65552 member
## 26 13036 41.91598 -87.67733 41.88213 -87.62512 member
## ride_length day_of_week weekday
## 1 275 2 2
## 2 177 5 5
## 4 226 5 5
## 6 308 4 4
## 20 421 3 3
## 26 1655 3 3
## 'data.frame': 965421 obs. of 16 variables:
## $ ride_id : chr "743252713F32516B" "BE90D33D2240C614" "6684E760BF9EA9B5" "AA64319F52336324" ...
## $ rideable_type : chr "classic_bike" "electric_bike" "classic_bike" "classic_bike" ...
## $ started_at : chr "2024-04-22 19:08:21" "2024-04-11 06:19:24" "2024-04-04 18:39:20" "2024-04-10 16:27:08" ...
## $ ended_at : chr "2024-04-22 19:12:56" "2024-04-11 06:22:21" "2024-04-04 18:43:06" "2024-04-10 16:32:16" ...
## $ start_station_name: chr "Aberdeen St & Jackson Blvd" "Aberdeen St & Jackson Blvd" "Aberdeen St & Jackson Blvd" "Aberdeen St & Jackson Blvd" ...
## $ start_station_id : num 13157 13157 13157 13157 15535 ...
## $ end_station_name : chr "Desplaines St & Jackson Blvd" "Desplaines St & Jackson Blvd" "Desplaines St & Jackson Blvd" "Loomis St & Lexington St" ...
## $ end_station_id : num 15539 15539 15539 13332 13156 ...
## $ start_lat : num 41.9 41.9 41.9 41.9 41.9 ...
## $ start_lng : num -87.7 -87.7 -87.7 -87.7 -87.6 ...
## $ end_lat : num 41.9 41.9 41.9 41.9 41.9 ...
## $ end_lng : num -87.6 -87.6 -87.6 -87.7 -87.7 ...
## $ member_casual : chr "member" "member" "member" "member" ...
## $ ride_length : num 275 177 226 308 421 ...
## $ day_of_week : num 2 5 5 4 3 3 2 5 7 5 ...
## $ weekday : num 2 5 5 4 3 3 2 5 7 5 ...
## - attr(*, "na.action")= 'omit' Named int [1:4807558] 3 5 7 8 9 10 11 12 13 14 ...
## ..- attr(*, "names")= chr [1:4807558] "3" "5" "7" "8" ...
## 'data.frame': 965421 obs. of 12 variables:
## $ ride_id : chr "743252713F32516B" "BE90D33D2240C614" "6684E760BF9EA9B5" "AA64319F52336324" ...
## $ rideable_type : chr "classic_bike" "electric_bike" "classic_bike" "classic_bike" ...
## $ started_at : chr "2024-04-22 19:08:21" "2024-04-11 06:19:24" "2024-04-04 18:39:20" "2024-04-10 16:27:08" ...
## $ ended_at : chr "2024-04-22 19:12:56" "2024-04-11 06:22:21" "2024-04-04 18:43:06" "2024-04-10 16:32:16" ...
## $ start_station_name: chr "Aberdeen St & Jackson Blvd" "Aberdeen St & Jackson Blvd" "Aberdeen St & Jackson Blvd" "Aberdeen St & Jackson Blvd" ...
## $ start_station_id : num 13157 13157 13157 13157 15535 ...
## $ end_station_name : chr "Desplaines St & Jackson Blvd" "Desplaines St & Jackson Blvd" "Desplaines St & Jackson Blvd" "Loomis St & Lexington St" ...
## $ end_station_id : num 15539 15539 15539 13332 13156 ...
## $ member_casual : chr "member" "member" "member" "member" ...
## $ ride_length : num 275 177 226 308 421 ...
## $ day_of_week : num 2 5 5 4 3 3 2 5 7 5 ...
## $ weekday : num 2 5 5 4 3 3 2 5 7 5 ...
## - attr(*, "na.action")= 'omit' Named int [1:4807558] 3 5 7 8 9 10 11 12 13 14 ...
## ..- attr(*, "names")= chr [1:4807558] "3" "5" "7" "8" ...
## ride_id rideable_type started_at ended_at
## 0 0 0 0
## start_station_name start_station_id end_station_name end_station_id
## 0 0 0 0
## member_casual ride_length day_of_week weekday
## 0 0 0 0
##
## casual member
## 406880 558541
## ride_id rideable_type started_at ended_at
## 1 743252713F32516B classic_bike 2024-04-22 19:08:21 2024-04-22 19:12:56
## 2 BE90D33D2240C614 electric_bike 2024-04-11 06:19:24 2024-04-11 06:22:21
## 4 6684E760BF9EA9B5 classic_bike 2024-04-04 18:39:20 2024-04-04 18:43:06
## 6 AA64319F52336324 classic_bike 2024-04-10 16:27:08 2024-04-10 16:32:16
## 20 3343C607757067B2 electric_bike 2024-04-16 18:14:23 2024-04-16 18:21:24
## 26 27F37997E1413F1C classic_bike 2024-04-16 09:34:09 2024-04-16 10:01:44
## start_station_name start_station_id end_station_name
## 1 Aberdeen St & Jackson Blvd 13157 Desplaines St & Jackson Blvd
## 2 Aberdeen St & Jackson Blvd 13157 Desplaines St & Jackson Blvd
## 4 Aberdeen St & Jackson Blvd 13157 Desplaines St & Jackson Blvd
## 6 Aberdeen St & Jackson Blvd 13157 Loomis St & Lexington St
## 20 Desplaines St & Randolph St 15535 Aberdeen St & Monroe St
## 26 Damen Ave & Cortland St 13133 Michigan Ave & Madison St
## end_station_id member_casual ride_length day_of_week weekday date
## 1 15539 member 275 2 2 2024-04-22
## 2 15539 member 177 5 5 2024-04-11
## 4 15539 member 226 5 5 2024-04-04
## 6 13332 member 308 4 4 2024-04-10
## 20 13156 member 421 3 3 2024-04-16
## 26 13036 member 1655 3 3 2024-04-16
## month day year
## 1 04 22 2024
## 2 04 11 2024
## 4 04 04 2024
## 6 04 10 2024
## 20 04 16 2024
## 26 04 16 2024
## [1] TRUE
## ride_id rideable_type started_at ended_at
## Length:965410 Length:965410 Length:965410 Length:965410
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## start_station_name start_station_id end_station_name end_station_id
## Length:965410 Min. : 20 Length:965410 Min. : 20
## Class :character 1st Qu.: 13042 Class :character 1st Qu.: 13042
## Mode :character Median : 13196 Mode :character Median : 13196
## Mean : 13434 Mean : 13588
## 3rd Qu.: 13420 3rd Qu.: 13409
## Max. :1524189 Max. :1524189
## member_casual ride_length day_of_week weekday
## Length:965410 Min. : 0.0 Min. :1.00 Min. :1.00
## Class :character 1st Qu.: 355.3 1st Qu.:2.00 1st Qu.:2.00
## Mode :character Median : 662.2 Median :4.00 Median :4.00
## Mean : 1116.1 Mean :4.11 Mean :4.11
## 3rd Qu.: 1238.4 3rd Qu.:6.00 3rd Qu.:6.00
## Max. :89906.1 Max. :7.00 Max. :7.00
## date month day year
## Min. :2024-04-01 Length:965410 Length:965410 Length:965410
## 1st Qu.:2024-06-18 Class :character Class :character Class :character
## Median :2024-08-14 Mode :character Mode :character Mode :character
## Mean :2024-08-23
## 3rd Qu.:2024-10-12
## Max. :2025-03-31
## [1] 1116.124
## [1] 662.226
## [1] 89906.09
## [1] 0
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.0 355.3 662.2 1116.1 1238.4 89906.1
## bike_usage_df_v2$member_casual bike_usage_df_v2$ride_length
## 1 casual 1584.2170
## 2 member 775.1349
## bike_usage_df_v2$member_casual bike_usage_df_v2$ride_length
## 1 casual 893.4210
## 2 member 550.5615
## bike_usage_df_v2$member_casual bike_usage_df_v2$ride_length
## 1 casual 89906.09
## 2 member 89546.61
## bike_usage_df_v2$member_casual bike_usage_df_v2$ride_length
## 1 casual 0
## 2 member 0
## bike_usage_df_v2$member_casual bike_usage_df_v2$day_of_week
## 1 casual 1
## 2 member 1
## 3 casual 2
## 4 member 2
## 5 casual 3
## 6 member 3
## 7 casual 4
## 8 member 4
## 9 casual 5
## 10 member 5
## 11 casual 6
## 12 member 6
## 13 casual 7
## 14 member 7
## bike_usage_df_v2$ride_length
## 1 1785.3707
## 2 874.1751
## 3 1543.3948
## 4 736.9492
## 5 1388.5966
## 6 737.6687
## 7 1441.1664
## 8 746.3908
## 9 1393.1090
## 10 740.3294
## 11 1528.4687
## 12 761.4890
## 13 1756.4773
## 14 863.7988
## `summarise()` has grouped output by 'member_casual'. You can override using the
## `.groups` argument.
## # A tibble: 14 × 4
## # Groups: member_casual [2]
## member_casual day_of_week number_of_rides average_duration
## <chr> <dbl> <int> <dbl>
## 1 casual 1 72260 1785.
## 2 casual 2 48922 1543.
## 3 casual 3 41746 1389.
## 4 casual 4 47458 1441.
## 5 casual 5 47332 1393.
## 6 casual 6 62415 1528.
## 7 casual 7 86741 1756.
## 8 member 1 63487 874.
## 9 member 2 81633 737.
## 10 member 3 84825 738.
## 11 member 4 89264 746.
## 12 member 5 84691 740.
## 13 member 6 80047 761.
## 14 member 7 74589 864.
## ride_id rideable_type started_at ended_at
## 1 743252713F32516B classic_bike 2024-04-22 19:08:21 2024-04-22 19:12:56
## 2 BE90D33D2240C614 electric_bike 2024-04-11 06:19:24 2024-04-11 06:22:21
## 4 6684E760BF9EA9B5 classic_bike 2024-04-04 18:39:20 2024-04-04 18:43:06
## 6 AA64319F52336324 classic_bike 2024-04-10 16:27:08 2024-04-10 16:32:16
## 20 3343C607757067B2 electric_bike 2024-04-16 18:14:23 2024-04-16 18:21:24
## 26 27F37997E1413F1C classic_bike 2024-04-16 09:34:09 2024-04-16 10:01:44
## start_station_name start_station_id end_station_name
## 1 Aberdeen St & Jackson Blvd 13157 Desplaines St & Jackson Blvd
## 2 Aberdeen St & Jackson Blvd 13157 Desplaines St & Jackson Blvd
## 4 Aberdeen St & Jackson Blvd 13157 Desplaines St & Jackson Blvd
## 6 Aberdeen St & Jackson Blvd 13157 Loomis St & Lexington St
## 20 Desplaines St & Randolph St 15535 Aberdeen St & Monroe St
## 26 Damen Ave & Cortland St 13133 Michigan Ave & Madison St
## end_station_id member_casual ride_length day_of_week weekday date
## 1 15539 member 275 Monday 2 2024-04-22
## 2 15539 member 177 Thursday 5 2024-04-11
## 4 15539 member 226 Thursday 5 2024-04-04
## 6 13332 member 308 Wednesday 4 2024-04-10
## 20 13156 member 421 Tuesday 3 2024-04-16
## 26 13036 member 1655 Tuesday 3 2024-04-16
## month day year month_abbr
## 1 04 22 2024 Apr 24
## 2 04 11 2024 Apr 24
## 4 04 04 2024 Apr 24
## 6 04 10 2024 Apr 24
## 20 04 16 2024 Apr 24
## 26 04 16 2024 Apr 24
## `summarise()` has grouped output by 'member_casual'. You can override using the
## `.groups` argument.
## `summarise()` has grouped output by 'member_casual'. You can override using the
## `.groups` argument.
## ride_id rideable_type started_at ended_at
## 1 743252713F32516B classic_bike 2024-04-22 19:08:21 2024-04-22 19:12:56
## 2 BE90D33D2240C614 electric_bike 2024-04-11 06:19:24 2024-04-11 06:22:21
## 4 6684E760BF9EA9B5 classic_bike 2024-04-04 18:39:20 2024-04-04 18:43:06
## 6 AA64319F52336324 classic_bike 2024-04-10 16:27:08 2024-04-10 16:32:16
## 20 3343C607757067B2 electric_bike 2024-04-16 18:14:23 2024-04-16 18:21:24
## 26 27F37997E1413F1C classic_bike 2024-04-16 09:34:09 2024-04-16 10:01:44
## start_station_name start_station_id end_station_name
## 1 Aberdeen St & Jackson Blvd 13157 Desplaines St & Jackson Blvd
## 2 Aberdeen St & Jackson Blvd 13157 Desplaines St & Jackson Blvd
## 4 Aberdeen St & Jackson Blvd 13157 Desplaines St & Jackson Blvd
## 6 Aberdeen St & Jackson Blvd 13157 Loomis St & Lexington St
## 20 Desplaines St & Randolph St 15535 Aberdeen St & Monroe St
## 26 Damen Ave & Cortland St 13133 Michigan Ave & Madison St
## end_station_id member_casual ride_length day_of_week weekday date
## 1 15539 member 275 Monday 2 2024-04-22
## 2 15539 member 177 Thursday 5 2024-04-11
## 4 15539 member 226 Thursday 5 2024-04-04
## 6 13332 member 308 Wednesday 4 2024-04-10
## 20 13156 member 421 Tuesday 3 2024-04-16
## 26 13036 member 1655 Tuesday 3 2024-04-16
## month day year month_abbr
## 1 04 22 2024 Apr 24
## 2 04 11 2024 Apr 24
## 4 04 04 2024 Apr 24
## 6 04 10 2024 Apr 24
## 20 04 16 2024 Apr 24
## 26 04 16 2024 Apr 24
## Warning: The dot-dot notation (`..density..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(density)` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: The following aesthetics were dropped during statistical transformation: fill.
## ℹ This can happen when ggplot fails to infer the correct grouping structure in
## the data.
## ℹ Did you forget to specify a `group` aesthetic or to convert a numerical
## variable into a factor?
### Find IQR and outliers of ride_length
## [1] 75402 17
10 hours thats assuming that they had a 8 hour day work. 1 hour of travel + 1 hour or extra curriculum activities (example (gym, food, etc))
####Looking at boxplot after removal of bad records to see
distribution of values
## 'data.frame': 0 obs. of 17 variables:
## $ ride_id : chr
## $ rideable_type : chr
## $ started_at : chr
## $ ended_at : chr
## $ start_station_name: chr
## $ start_station_id : num
## $ end_station_name : chr
## $ end_station_id : num
## $ member_casual : chr
## $ ride_length : num
## $ day_of_week : Ord.factor w/ 7 levels "Sunday"<"Monday"<..:
## $ weekday : num
## $ date : 'Date' num(0)
## $ month : chr
## $ day : chr
## $ year : chr
## $ month_abbr : chr
## - attr(*, "na.action")= 'omit' Named int [1:4807558] 3 5 7 8 9 10 11 12 13 14 ...
## ..- attr(*, "names")= chr [1:4807558] "3" "5" "7" "8" ...
## `summarise()` has grouped output by 'rideable_type'. You can override using the
## `.groups` argument.
## `summarise()` has grouped output by 'rideable_type'. You can override using the
## `.groups` argument.
## `summarise()` has grouped output by 'rideable_type', 'weekday'. You can
## override using the `.groups` argument.
## `summarise()` has grouped output by 'rideable_type'. You can override using the
## `.groups` argument.
## `summarise()` has grouped output by 'member_casual'. You can override using the
## `.groups` argument.
## `summarise()` has grouped output by 'member_casual'. You can override using the
## `.groups` argument.
## # A tibble: 6 × 5
## # Groups: member_casual [1]
## member_casual day_of_week number_of_rides average_ride_duration median
## <chr> <ord> <int> <dbl> <dbl>
## 1 member Wednesday 48935 330. 327
## 2 member Tuesday 47341 330. 326
## 3 member Thursday 46812 330. 327.
## 4 member Monday 45750 328. 323.
## 5 member Friday 43600 329. 327.
## 6 member Saturday 36772 330. 330.
### Summary stats for member_casual riders
## # A tibble: 2 × 5
## member_casual total_rides percentage avg_ride_length median
## <chr> <int> <dbl> <dbl> <dbl>
## 1 casual 137385 31.4 338. 351.
## 2 member 300559 68.6 330. 327.
## # A tibble: 3 × 5
## rideable_type total_rides percentage avg_ride_length median
## <chr> <int> <dbl> <dbl> <dbl>
## 1 classic_bike 231692 52.9 337. 337.
## 2 electric_bike 198922 45.4 328. 331.
## 3 electric_scooter 7330 1.67 315. 308.
## `summarise()` has grouped output by 'rideable_type', 'day_of_week'. You can
## override using the `.groups` argument.
## # A tibble: 10 × 8
## # Groups: rideable_type, day_of_week [10]
## rideable_type day_of_week member_casual number_of_rides average_ride_duration
## <chr> <ord> <chr> <int> <dbl>
## 1 classic_bike Wednesday member 27330 330.
## 2 classic_bike Tuesday member 26448 330.
## 3 classic_bike Thursday member 25920 330.
## 4 classic_bike Monday member 25522 327.
## 5 classic_bike Friday member 23928 330.
## 6 electric_bike Wednesday member 20966 331.
## 7 classic_bike Saturday member 20955 335.
## 8 electric_bike Tuesday member 20324 330.
## 9 electric_bike Thursday member 20308 331.
## 10 electric_bike Monday member 19644 331.
## # ℹ 3 more variables: median <dbl>, max <dbl>, min <dbl>
### Aggregate rideable_type by member_casual by day of week
## `summarise()` has grouped output by 'rideable_type', 'member_casual'. You can
## override using the `.groups` argument.
## `summarise()` has grouped output by 'member_casual'. You can override using the
## `.groups` argument.
### Aggregate member_casual by rideable_type by weekday
## `summarise()` has grouped output by 'member_casual', 'rideable_type'. You can
## override using the `.groups` argument.
## `summarise()` has grouped output by 'start_station_name'. You can override
## using the `.groups` argument.
## List of 136
## $ line :List of 6
## ..$ colour : chr "black"
## ..$ linewidth : num 0.5
## ..$ linetype : num 1
## ..$ lineend : chr "butt"
## ..$ arrow : logi FALSE
## ..$ inherit.blank: logi TRUE
## ..- attr(*, "class")= chr [1:2] "element_line" "element"
## $ rect :List of 5
## ..$ fill : chr "white"
## ..$ colour : chr "black"
## ..$ linewidth : num 0.5
## ..$ linetype : num 1
## ..$ inherit.blank: logi TRUE
## ..- attr(*, "class")= chr [1:2] "element_rect" "element"
## $ text :List of 11
## ..$ family : chr ""
## ..$ face : chr "plain"
## ..$ colour : chr "black"
## ..$ size : num 11
## ..$ hjust : num 0.5
## ..$ vjust : num 0.5
## ..$ angle : num 0
## ..$ lineheight : num 0.9
## ..$ margin : 'margin' num [1:4] 0points 0points 0points 0points
## .. ..- attr(*, "unit")= int 8
## ..$ debug : logi FALSE
## ..$ inherit.blank: logi TRUE
## ..- attr(*, "class")= chr [1:2] "element_text" "element"
## $ title : NULL
## $ aspect.ratio : NULL
## $ axis.title : NULL
## $ axis.title.x :List of 11
## ..$ family : NULL
## ..$ face : NULL
## ..$ colour : NULL
## ..$ size : NULL
## ..$ hjust : NULL
## ..$ vjust : num 1
## ..$ angle : NULL
## ..$ lineheight : NULL
## ..$ margin : 'margin' num [1:4] 2.75points 0points 0points 0points
## .. ..- attr(*, "unit")= int 8
## ..$ debug : NULL
## ..$ inherit.blank: logi TRUE
## ..- attr(*, "class")= chr [1:2] "element_text" "element"
## $ axis.title.x.top :List of 11
## ..$ family : NULL
## ..$ face : NULL
## ..$ colour : NULL
## ..$ size : NULL
## ..$ hjust : NULL
## ..$ vjust : num 0
## ..$ angle : NULL
## ..$ lineheight : NULL
## ..$ margin : 'margin' num [1:4] 0points 0points 2.75points 0points
## .. ..- attr(*, "unit")= int 8
## ..$ debug : NULL
## ..$ inherit.blank: logi TRUE
## ..- attr(*, "class")= chr [1:2] "element_text" "element"
## $ axis.title.x.bottom : NULL
## $ axis.title.y :List of 11
## ..$ family : NULL
## ..$ face : NULL
## ..$ colour : NULL
## ..$ size : NULL
## ..$ hjust : NULL
## ..$ vjust : num 1
## ..$ angle : num 90
## ..$ lineheight : NULL
## ..$ margin : 'margin' num [1:4] 0points 2.75points 0points 0points
## .. ..- attr(*, "unit")= int 8
## ..$ debug : NULL
## ..$ inherit.blank: logi TRUE
## ..- attr(*, "class")= chr [1:2] "element_text" "element"
## $ axis.title.y.left : NULL
## $ axis.title.y.right :List of 11
## ..$ family : NULL
## ..$ face : NULL
## ..$ colour : NULL
## ..$ size : NULL
## ..$ hjust : NULL
## ..$ vjust : num 1
## ..$ angle : num -90
## ..$ lineheight : NULL
## ..$ margin : 'margin' num [1:4] 0points 0points 0points 2.75points
## .. ..- attr(*, "unit")= int 8
## ..$ debug : NULL
## ..$ inherit.blank: logi TRUE
## ..- attr(*, "class")= chr [1:2] "element_text" "element"
## $ axis.text :List of 11
## ..$ family : NULL
## ..$ face : NULL
## ..$ colour : chr "grey30"
## ..$ size : 'rel' num 0.8
## ..$ hjust : NULL
## ..$ vjust : NULL
## ..$ angle : NULL
## ..$ lineheight : NULL
## ..$ margin : NULL
## ..$ debug : NULL
## ..$ inherit.blank: logi TRUE
## ..- attr(*, "class")= chr [1:2] "element_text" "element"
## $ axis.text.x :List of 11
## ..$ family : NULL
## ..$ face : NULL
## ..$ colour : NULL
## ..$ size : NULL
## ..$ hjust : num 1
## ..$ vjust : num 0.5
## ..$ angle : num 90
## ..$ lineheight : NULL
## ..$ margin : 'margin' num [1:4] 2.2points 0points 0points 0points
## .. ..- attr(*, "unit")= int 8
## ..$ debug : NULL
## ..$ inherit.blank: logi FALSE
## ..- attr(*, "class")= chr [1:2] "element_text" "element"
## $ axis.text.x.top :List of 11
## ..$ family : NULL
## ..$ face : NULL
## ..$ colour : NULL
## ..$ size : NULL
## ..$ hjust : NULL
## ..$ vjust : num 0
## ..$ angle : NULL
## ..$ lineheight : NULL
## ..$ margin : 'margin' num [1:4] 0points 0points 2.2points 0points
## .. ..- attr(*, "unit")= int 8
## ..$ debug : NULL
## ..$ inherit.blank: logi TRUE
## ..- attr(*, "class")= chr [1:2] "element_text" "element"
## $ axis.text.x.bottom : NULL
## $ axis.text.y :List of 11
## ..$ family : NULL
## ..$ face : NULL
## ..$ colour : NULL
## ..$ size : NULL
## ..$ hjust : num 1
## ..$ vjust : NULL
## ..$ angle : NULL
## ..$ lineheight : NULL
## ..$ margin : 'margin' num [1:4] 0points 2.2points 0points 0points
## .. ..- attr(*, "unit")= int 8
## ..$ debug : NULL
## ..$ inherit.blank: logi TRUE
## ..- attr(*, "class")= chr [1:2] "element_text" "element"
## $ axis.text.y.left : NULL
## $ axis.text.y.right :List of 11
## ..$ family : NULL
## ..$ face : NULL
## ..$ colour : NULL
## ..$ size : NULL
## ..$ hjust : num 0
## ..$ vjust : NULL
## ..$ angle : NULL
## ..$ lineheight : NULL
## ..$ margin : 'margin' num [1:4] 0points 0points 0points 2.2points
## .. ..- attr(*, "unit")= int 8
## ..$ debug : NULL
## ..$ inherit.blank: logi TRUE
## ..- attr(*, "class")= chr [1:2] "element_text" "element"
## $ axis.text.theta : NULL
## $ axis.text.r :List of 11
## ..$ family : NULL
## ..$ face : NULL
## ..$ colour : NULL
## ..$ size : NULL
## ..$ hjust : num 0.5
## ..$ vjust : NULL
## ..$ angle : NULL
## ..$ lineheight : NULL
## ..$ margin : 'margin' num [1:4] 0points 2.2points 0points 2.2points
## .. ..- attr(*, "unit")= int 8
## ..$ debug : NULL
## ..$ inherit.blank: logi TRUE
## ..- attr(*, "class")= chr [1:2] "element_text" "element"
## $ axis.ticks : list()
## ..- attr(*, "class")= chr [1:2] "element_blank" "element"
## $ axis.ticks.x : NULL
## $ axis.ticks.x.top : NULL
## $ axis.ticks.x.bottom : NULL
## $ axis.ticks.y : NULL
## $ axis.ticks.y.left : NULL
## $ axis.ticks.y.right : NULL
## $ axis.ticks.theta : NULL
## $ axis.ticks.r : NULL
## $ axis.minor.ticks.x.top : NULL
## $ axis.minor.ticks.x.bottom : NULL
## $ axis.minor.ticks.y.left : NULL
## $ axis.minor.ticks.y.right : NULL
## $ axis.minor.ticks.theta : NULL
## $ axis.minor.ticks.r : NULL
## $ axis.ticks.length : 'simpleUnit' num 2.75points
## ..- attr(*, "unit")= int 8
## $ axis.ticks.length.x : NULL
## $ axis.ticks.length.x.top : NULL
## $ axis.ticks.length.x.bottom : NULL
## $ axis.ticks.length.y : NULL
## $ axis.ticks.length.y.left : NULL
## $ axis.ticks.length.y.right : NULL
## $ axis.ticks.length.theta : NULL
## $ axis.ticks.length.r : NULL
## $ axis.minor.ticks.length : 'rel' num 0.75
## $ axis.minor.ticks.length.x : NULL
## $ axis.minor.ticks.length.x.top : NULL
## $ axis.minor.ticks.length.x.bottom: NULL
## $ axis.minor.ticks.length.y : NULL
## $ axis.minor.ticks.length.y.left : NULL
## $ axis.minor.ticks.length.y.right : NULL
## $ axis.minor.ticks.length.theta : NULL
## $ axis.minor.ticks.length.r : NULL
## $ axis.line : list()
## ..- attr(*, "class")= chr [1:2] "element_blank" "element"
## $ axis.line.x : NULL
## $ axis.line.x.top : NULL
## $ axis.line.x.bottom : NULL
## $ axis.line.y : NULL
## $ axis.line.y.left : NULL
## $ axis.line.y.right : NULL
## $ axis.line.theta : NULL
## $ axis.line.r : NULL
## $ legend.background : list()
## ..- attr(*, "class")= chr [1:2] "element_blank" "element"
## $ legend.margin : 'margin' num [1:4] 5.5points 5.5points 5.5points 5.5points
## ..- attr(*, "unit")= int 8
## $ legend.spacing : 'simpleUnit' num 11points
## ..- attr(*, "unit")= int 8
## $ legend.spacing.x : NULL
## $ legend.spacing.y : NULL
## $ legend.key : list()
## ..- attr(*, "class")= chr [1:2] "element_blank" "element"
## $ legend.key.size : 'simpleUnit' num 1.2lines
## ..- attr(*, "unit")= int 3
## $ legend.key.height : NULL
## $ legend.key.width : NULL
## $ legend.key.spacing : 'simpleUnit' num 5.5points
## ..- attr(*, "unit")= int 8
## $ legend.key.spacing.x : NULL
## $ legend.key.spacing.y : NULL
## $ legend.frame : NULL
## $ legend.ticks : NULL
## $ legend.ticks.length : 'rel' num 0.2
## $ legend.axis.line : NULL
## $ legend.text :List of 11
## ..$ family : NULL
## ..$ face : NULL
## ..$ colour : NULL
## ..$ size : 'rel' num 0.8
## ..$ hjust : NULL
## ..$ vjust : NULL
## ..$ angle : NULL
## ..$ lineheight : NULL
## ..$ margin : NULL
## ..$ debug : NULL
## ..$ inherit.blank: logi TRUE
## ..- attr(*, "class")= chr [1:2] "element_text" "element"
## $ legend.text.position : NULL
## $ legend.title :List of 11
## ..$ family : NULL
## ..$ face : NULL
## ..$ colour : NULL
## ..$ size : NULL
## ..$ hjust : num 0
## ..$ vjust : NULL
## ..$ angle : NULL
## ..$ lineheight : NULL
## ..$ margin : NULL
## ..$ debug : NULL
## ..$ inherit.blank: logi TRUE
## ..- attr(*, "class")= chr [1:2] "element_text" "element"
## $ legend.title.position : NULL
## $ legend.position : chr "right"
## $ legend.position.inside : NULL
## $ legend.direction : NULL
## $ legend.byrow : NULL
## $ legend.justification : chr "center"
## $ legend.justification.top : NULL
## $ legend.justification.bottom : NULL
## $ legend.justification.left : NULL
## $ legend.justification.right : NULL
## $ legend.justification.inside : NULL
## $ legend.location : NULL
## $ legend.box : NULL
## $ legend.box.just : NULL
## $ legend.box.margin : 'margin' num [1:4] 0cm 0cm 0cm 0cm
## ..- attr(*, "unit")= int 1
## $ legend.box.background : list()
## ..- attr(*, "class")= chr [1:2] "element_blank" "element"
## $ legend.box.spacing : 'simpleUnit' num 11points
## ..- attr(*, "unit")= int 8
## [list output truncated]
## - attr(*, "class")= chr [1:2] "theme" "gg"
## - attr(*, "complete")= logi TRUE
## - attr(*, "validate")= logi TRUE
looks like september is the most busy month for casual users
## `summarise()` has grouped output by 'start_station_name', 'member_casual',
## 'rideable_type'. You can override using the `.groups` argument.
### Looking at top stations summary for Member Users in the last Year
looks like september is the most busy month for casual users
## `summarise()` has grouped output by 'start_station_name', 'member_casual',
## 'rideable_type'. You can override using the `.groups` argument.
## `summarise()` has grouped output by 'start_station_name', 'member_casual',
## 'rideable_type'. You can override using the `.groups` argument.
## `summarise()` has grouped output by 'start_station_name', 'rideable_type'. You
## can override using the `.groups` argument.
### ussage of rideable type in the top 600 stations
## `summarise()` has grouped output by 'start_station_name', 'rideable_type'. You
## can override using the `.groups` argument.
### ussage of rideable type in the top 100 stations
## `summarise()` has grouped output by 'start_station_name', 'rideable_type'. You
## can override using the `.groups` argument.
### top 10 stations
## `summarise()` has grouped output by 'start_station_name', 'member_casual'. You
## can override using the `.groups` argument.
## Selecting by total_count
## # A tibble: 15 × 4
## start_station_name member_casual rideable_type total_count
## <chr> <chr> <chr> <int>
## 1 State St & 33rd St member classic_bike 4644
## 2 Calumet Ave & 33rd St member classic_bike 3947
## 3 Streeter Dr & Grand Ave casual classic_bike 2914
## 4 Aberdeen St & Jackson Blvd member classic_bike 2876
## 5 Loomis St & Lexington St member classic_bike 2604
## 6 Peoria St & Jackson Blvd member classic_bike 2586
## 7 Broadway & Waveland Ave member classic_bike 2445
## 8 State St & 33rd St member electric_bike 2267
## 9 DuSable Lake Shore Dr & Monroe St casual classic_bike 2265
## 10 Ashland Ave & Division St member classic_bike 2165
## 11 Clinton St & Jackson Blvd member electric_bike 2132
## 12 Canal St & Madison St member electric_bike 2129
## 13 State St & Chicago Ave member classic_bike 2072
## 14 Clinton St & Lake St member classic_bike 2069
## 15 Clinton St & Lake St member electric_bike 2019
## `summarise()` has grouped output by 'start_station_name', 'member_casual'. You
## can override using the `.groups` argument.
## Selecting by total_count
## # A tibble: 10 × 4
## start_station_name member_casual rideable_type total_count
## <chr> <chr> <chr> <int>
## 1 Streeter Dr & Grand Ave casual classic_bike 2914
## 2 DuSable Lake Shore Dr & Monroe St casual classic_bike 2265
## 3 Shedd Aquarium casual classic_bike 1576
## 4 Millennium Park casual classic_bike 1401
## 5 Streeter Dr & Grand Ave casual electric_bike 1298
## 6 DuSable Lake Shore Dr & Monroe St casual electric_bike 1159
## 7 Michigan Ave & Oak St casual classic_bike 1096
## 8 Michigan Ave & 8th St casual classic_bike 1021
## 9 Aberdeen St & Jackson Blvd casual classic_bike 927
## 10 Adler Planetarium casual classic_bike 890
## # A tibble: 10 × 1
## start_station_name
## <chr>
## 1 Streeter Dr & Grand Ave
## 2 DuSable Lake Shore Dr & Monroe St
## 3 Shedd Aquarium
## 4 Millennium Park
## 5 Streeter Dr & Grand Ave
## 6 DuSable Lake Shore Dr & Monroe St
## 7 Michigan Ave & Oak St
## 8 Michigan Ave & 8th St
## 9 Aberdeen St & Jackson Blvd
## 10 Adler Planetarium